home *** CD-ROM | disk | FTP | other *** search
-
- -- -----------------------------------------------------------------
- -- View update
- -- -----------------------------------------------------------------
- local function animateFish(model)
- if model:isAlive() then
- local action = model:getAction()
-
- if "move_up" == action then
- model:runAnim("vertical_up")
- elseif "move_down" == action then
- model:runAnim("vertical_down")
- elseif "move_left" == action or "move_right" == action then
- model:runAnim("swam")
- elseif "turn" == action then
- model:runAnim("turn")
- elseif "activate" == action then
- model:setAnim("turn", 0)
- elseif "busy" == action then
- model:setAnim("turn", 0)
- else
- --NOTE: for talking see animateHead() bellow
- model:runAnim("rest")
- end
- else
- model:runAnim("skeleton")
- end
- end
-
- -- -----------------------------------------------------------------
- local function animateHead(model)
- if model:isAlive() then
- local state = model:getState()
- if "talking" == state or model_isTalking(TALK_INDEX_BOTH) then
- if not model.talk_phase then
- model.talk_phase = random(3)
- elseif math.mod(game_getCycles(), 2) == 0 then
- model.talk_phase = math.mod(
- model.talk_phase + randint(1, 2), 3)
- end
- else
- model.talk_phase = false
- end
-
- local action = model:getAction()
- if "busy" == action then
- if model.talk_phase then
- model:setAnim("talk", model.talk_phase)
- else
- model:setAnim("turn", 0)
- end
- else
- if "talking" == state or model_isTalking(TALK_INDEX_BOTH) then
- model:useSpecialAnim("head_talking", model.talk_phase)
- elseif "pushing" == state then
- model:useSpecialAnim("head_pushing", 0)
- elseif random(100) < 6 then
- model:useSpecialAnim("head_blink", 0)
- end
- end
- end
- end
-
- -- -----------------------------------------------------------------
- function animateUnits()
- for index, unit in pairs(getUnitTable()) do
- animateFish(unit)
- animateHead(unit)
- end
- end
-
-